Ir para conteúdo principal Pular para conteúdo complementar

For each..next

O comando de controle for each..next cria uma construção de iteração de script que executa um ou vários comandos para cada valor de uma lista separada por vírgulas. Os comandos dentro do loop incluídos entre for e next serão executados para cada valor da lista.

Sintaxe:  

A sintaxe especial permite gerar listas com nomes de arquivo e diretório no diretório atual.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Argumentos:  

Argumentos For each
Argumento Descrição
var Um nome de uma variável de script que adquire um novo valor da lista para cada execução de referência de loop. Se var for especificado depois de next, ele deverá ter o mesmo nome de variável que a encontrada após o for each correspondente.

O valor da variável var pode ser alterado por comandos dentro da referência circular, entretanto, essa não é uma prática de programação recomendável.

Se uma cláusula exit for for encontrada dentro do loop, a execução do script será transferida para o primeiro comando após a cláusula next, indicando o fim do loop. Uma cláusula exit for pode ser transformada em condicional pelo uso opcional de um sufixo when ou unless.

Nota informativaComo o comando for each..next é um comando de controle e, portanto, termina com um ponto e vírgula ou com um fim de linha, cada uma das três cláusulas possíveis (for each,exit for e next) não deve ultrapassar o limite da linha.

Sintaxe:  

list := item { , item }

item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)

 

Argumentos List
Argumento Descrição
constant Qualquer número ou string. Observe que uma string escrita diretamente no script deve ser colocada entre aspas simples. Uma string sem aspas simples será interpretada como uma variável e, em seguida, o valor da variável será usado. Os números não precisam ser colocados entre aspas simples.
expression Uma expressão arbitrária.
mask

A máscara de um nome de arquivo ou de um nome de pasta que pode incluir todos os caracteres válidos de nome de arquivo, bem como os caracteres curingas padrão * e ?.

condition Uma expressão lógica de avaliação como True ou False.
statements Qualquer grupo de um ou mais comandos de script do QlikView.
filelist mask

Essa sintaxe produz uma lista separada por vírgulas de todos os arquivos existentes no diretório atual e que correspondem à máscara de nome de arquivo.

dirlist mask

Essa sintaxe produz uma lista separada por vírgulas de todas as pastas existentes na pasta atual e que correspondem à máscara de nome de pasta.

fieldvaluelist mask Esta sintaxe itera através dos valores de um campo já carregado no QlikView.
Nota de advertênciaO Qlik Web Storage Provider Connectors e outras conexões de DataFiles não oferecem suporte para máscaras de filtro que usam os caracteres curinga (* e ?).

Exemplo 1: Carregando uma lista de arquivos

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Exemplo 2: Criando uma lista de arquivos no disco

Este exemplo carrega uma lista de todos os arquivos do QlikView relacionados em uma pasta.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd' for each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'\*' ) call DoDir (Dir) next Dir end sub call DoDir ('C:')

Exemplo 3: Iterações através dos valores de um campo

Este exemplo itera através da lista dos valores carregados do FIELD e gera um novo campo, NEWFIELD. Para cada valor do FIELD, será criado dois registros NEWFIELD.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

A tabela resultante tem a seguinte aparência:

Example 3
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

Saiba mais

 

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!

Participe do Programa de Modernização do Analytics

Remove banner from view

Modernize sem comprometer seus valiosos aplicativos QlikView com o Programa de Modernização do Analytics. Clique aqui para mais informações ou entre em contato: ampquestions@qlik.com